 console.log('-----------构造函数使用访问器 ------------\n')
 var name ='aa'
 // 访问器属性的优先级高于数据属性
 var DATA = Symbol("_name")
 var user = {
 	//  name  顶级作用域.js
 	[DATA] : { name },
 	get name() {
 		return this[DATA].name
 	},
 	set name(val) {
 		this[DATA].name = val
 		return true
 	}
 }
 console.log(JSON.stringify(user))
 console.log(user)
 
 user.name = 'hello'
 console.log(user.name)
 
 console.log(JSON.stringify(user))
 console.log('--------class语法糖中使用访问器---------------\n')

class User {

	constructor(name, age) {
		this[DATA] = {name, age}
	}

	get name() {
		return this[DATA].name
	}
	set name(val) {
		if (val.trim() == "" || val.length > 20) {
          throw new Error("用户名不合法");
        }
		this[DATA].name = val
		return true
	}


	get age() {
		return this[DATA].age
	}
	set age(val) {
		this[DATA].age = val
		return true
	}
} 


let xj = new User("向军", 19);
console.log(xj);
xj.name = "后盾人";
console.log(xj.name);